Object 클래스
✒️ 2025-05-15 11:42 내용 수정
java 클래스의 최상위 클래스
- java의 다른 클래스들은 Object를 상속하고 있다.
- 상속(Inheritance) 참고.
- java의 모든 클래스는 Object 클래스의 메서드를 바로 사용할 수 있다.
- 필드를 가지지 않고 총 11개의 메서드만으로 구성되어 있다.
- 상황에 따라 필요한 메서드를 찾아가며 사용하자.
- Object의 메서드들은 클래스에 맞게 오버라이드해서 사용할 수 있다.
- 아래는 자주 사용하는 Object 클래스의 메서드이다.
| 메서드 | 설명 |
|---|---|
protected Object clone() |
객체 자신을 복사한 후 반환 (배열의 복사) |
boolean equals(Object obj) |
다른 객체와 자신이 가진 참조 변수 값 비교 |
int hashCode() |
객체의 hashCode 값을 반환 |
String toString() |
객체 자신의 정보를 반환(클래스@해시코드) print()문을 사용하여 객체를 출력할 경우, 해당 메서드가 자동으로 실행되어 객체의 정보를 반환해주고 출력된다. |
clone() |
해당 인스턴스를 복제해서 새 인스턴스를 생성 후 반환 필드의 값만 복사하므로 필드의 값이 배열이나 인스턴스면 제대로 복제X |
getClass() |
전달받은 객체의 클래스 반환 |
getName() |
전달받은 엔티티의 이름 반환 |
- hashCode : 객체를 식별하는 정수값, JVM에서 기억하는 객체의 위치 정보
System.identityHashCode(): 객체의 고유한 hashcode를 리턴하는 메서드
equals(): 객체를 동등 비교(==)할 때는 객체의 값을 비교하는 것이 아니라, 객체가 메모리에 있는 위치를 비교한다. 객체가 갖고 있는 데이터를 비교할 때는 equals()를 override해서 사용한다.

- 암시적 객체 생성 : 메모리에 같은 값을 가진 객체가 이미 존재하면 그 객체와 주소를 공유한다.
- Stack에 str1이 생성하고 Heap에 "hello" 값이 저장된다.
- Stack에 str2가 새로 생성하고, Heap에 "hello"를 저장하려 한다면 이미 Heap에 존재하는 "hello"의 주소값을 공유해서 가지게 된다.
String str1 = "hello";
String str2 = "hello";
System.out.println("str1 vs str2 : " + (str1 == str2));
str1 vs str2 : true
- 명시적 객체 생성 :
new라는 키워드로 객체를 생성하면 Heap에 새 메모리를 점유하게 된다.- 메모리 구조 참고.
- Stack에 str1 생성하고 Heap에 "hello" 값이 저장된다.
- Stack에 str3를 생성하고, new 키워드로 Heap에 "hello"를 생성하면 Heap에서 새 메모리를 가지며, str3는 str1과 다른 새 주소를 갖는다.
String str1 = "hello";
String str3 = new String("hello");
str1 vs str3 : false